
#ifndef KTRACE_OPTIONS_HPP
# define KTRACE_OPTIONS_HPP

# include <boost/program_options.hpp>

namespace Ktracens
{
	class Options
	{
		public:
			Options();
			Options(int ac, char** av);
			virtual ~Options();

		public:
			bool parse(int ac, char** av);
			bool checkConflicts() const;
			void displayUsage() const;
			bool exists(std::string const & opt) const;

			template <typename T>
			T const & get(std::string const & opt) const
			{
				return this->_options[opt].as<T>();
			}

		private:
			void _setDescription();

		private:
			boost::program_options::variables_map _options;
			boost::program_options::options_description _description;
			boost::program_options::positional_options_description _positionalDescription;
	};
}

#endif // KTRACE_OPTIONS_HPP

